type propsTypes = 'a' | 'b' | 'c'
// 定义一个对象
let x: { a: number, b: number, c: number }
// 使用映射类型定义对象,这里的key就是propsType中的字面量类型
let x2: { [key in propsTypes]: number }

// keyof
type objsType = { x: number, y: string, z: boolean }
type keyType = { [key in keyof objsType]: number }
let keys: keyType = {
    x: 34,
    y: 65,
    z: 33
}
console.log(keys);


type asw = {
    s: number,
    t: string
}
// 如果查询多个 属性，则组成联合类型
type d = asw['s' | 't']
let b: d = '432'
console.log(b);

// keyof 查询asw的所有key
type ert = asw[keyof asw]
let eeew: ert = 324
console.log(eeew);
